package cn.fastoo.alipay;


import cn.fastoo.utils.ConfigProps;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class AlipayHelper {

	public static void responseWrite(HttpServletResponse response, String str) {
		response.setContentType("text/html;charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");
		java.io.PrintWriter out;
		try {
			out = response.getWriter();
			out.write(str);
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static String buildRequest( String requestOrderNo, String requestSubject, String requestTotalAmount) throws AlipayApiException{
		// //////////////////////////////////请求参数//////////////////////////////////////

		//获得初始化的AlipayClient
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

		//设置请求参数
		AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
		alipayRequest.setReturnUrl(ConfigProps.getReturnUrl());
		alipayRequest.setNotifyUrl(ConfigProps.getNotifyUrl());

		//商户订单号，商户网站订单系统中唯一订单号，必填
		String out_trade_no  = requestOrderNo;//WIDout_trade_no
		//付款金额，必填
		String total_amount = requestTotalAmount; //WIDtotal_amount
		//订单名称，必填
		String subject = requestSubject; //WIDsubject
		//商品描述，可空
		String body = ""; //WIDbody

		alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
				+ "\"total_amount\":\""+ total_amount +"\","
				+ "\"subject\":\""+ subject +"\","
				+ "\"body\":\""+ body +"\","
				+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

		//若想给BizContent增加其他可选请求参数，以增加自定义超时时间参数timeout_express来举例说明
		//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
		//		+ "\"total_amount\":\""+ total_amount +"\","
		//		+ "\"subject\":\""+ subject +"\","
		//		+ "\"body\":\""+ body +"\","
		//		+ "\"timeout_express\":\"10m\","
		//		+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
		//请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节

		//请求
		String result = alipayClient.pageExecute(alipayRequest).getBody();
		return result;
	}


}
